package 剑指offer;


/*
 * Author：江松
 * Date：2023/3/18 12:36
 *

 删除链表中重复元素：
 双指针pre和now，分类讨论有无重复2中情况，进而写代码
 */

public class Main38 {


    class ListNode {
        int val;
        ListNode next = null;
        ListNode(){}
        ListNode(int val) {
            this.val = val;
        }
    }

    public ListNode deleteDuplication(ListNode pHead) {
        ListNode head=new ListNode(0);
        head.next=pHead;
        ListNode pre=head,now=head.next;
        boolean flag=false;//是否有重复
        while(now!=null){
            while(now.next!=null&&now.val==now.next.val){
                now=now.next;
                flag=true;
            }
            if(flag){
                //这里不要急着转移pre指针，因为now这个位置可能后面的还是重复的
                now=now.next;
                pre.next=now;
            }else{
                now=now.next;
                pre=pre.next;
            }
            flag=false;
        }
        return head.next;
    }
    public static void main(String[] args) {

    }
}
